(function($) {
	$.fn.initList = function() {
		var selectTitle = $(this);
		selectTitle.draggable({
			handle : '.list-title'
		}); // 添加拖拽事件

		/**
		 * 单击列表单击: 改变样式
		 */
		var itemClickHandler = function() {
			$(this).parent('.item-box').find('.item').removeClass('selected-item');
			$(this).addClass('selected-item');
		}
		/**
		 * 右侧单击列表单击: 改变样式
		 */
		var itemRightClickHandler = function() {
			//			$(this).parent('.right-box #' + tabId).find('.item').removeClass('selected-item');
			//			console.dir($(this).parent('.tab-pane').find('tr'));
			$(this).parent().find('tr').removeClass('selected-item');
			$(this).addClass('selected-item');
		}

		/**
		 * 左边列表项移至右边
		 */
		var leftMoveRight = function() {
			if (tabId != "") {
				//				selectTitle.find('.list-body #' + tabId).append($(this).removeClass('selected-item'));
				var context = $(this).context.innerHTML.split("：");
				var sensorNo = context[0];
				var sensorName = context[1];
				//				selectTitle.find('.list-body #' + tabId + ' #table-sensors').append('<tr><td>' + sensorNo + '</td><td><select class="form-control js-example-basic-single"><option value="volvo">' + sensorName + '</option></select></td></tr>');
				selectTitle.find('.list-body #' + tabId + ' #table-sensors').append('<tr><td class="sensorNo">' + sensorNo + '</td><td><select id="r' + sensorNo + '" class="form-control js-example-basic-single"></select></td></tr>');
				$('#r' + sensorNo).select2({
					data : select2Options
				});
				$('#r' + sensorNo + ' option').each(function() {
					if ($(this).text() == sensorName) {
						$(this).attr('selected', true).trigger("change");
					}
				});
				$(this).removeClass('selected-item');
				$(this).remove();
			}
			initItemEvent();
		}

		/**
		 * 右边列表项移至左边
		 */
		var rightMoveLeft = function() {
			selectTitle.find('.list-body .left-box').append('<span class="item" data-id="' + $(this).context.firstChild.textContent + '">' + $(this).context.firstChild.textContent + '：' + $(this).context.nextElementSibling.lastChild.innerText.trim() + '</span>');
			$(this).parent().remove();
			initItemEvent();
		}

		/**
		 * 初始化列表项选择事件
		 */
		function initItemEvent() {
			// 左边列表项单击、双击事件
			selectTitle.find('.list-body .left-box').find('.item').unbind('click');
			selectTitle.find('.list-body .left-box').find('.item').unbind('dblclick');
			selectTitle.find('.list-body .left-box').find('.item').each(function() {
				$(this).on("click", itemClickHandler);
				$(this).on('dblclick', leftMoveRight);
			});

			// 右边列表项单击、双击事件
			selectTitle.find('.list-body .right-gy').find('tr').unbind('click');
			selectTitle.find('.list-body .right-gy').find('tr').find('.sensorNo').unbind('dblclick');
			selectTitle.find('.list-body .right-gy').find('tr').each(function() {
				$(this).on('click', itemRightClickHandler);
				$(this).find('.sensorNo').on('dblclick', rightMoveLeft);
			});
		}

		/**
		 * 获取选择的值
		 * @return json数组
		 */
		function getSelectedValue() {
			var rightBox = selectTitle.find('.list-body .right-box');
			var itemValues = [];
			var itemValue;

			rightBox.find('.item').each(function() {
				itemValue = {};
				itemValue[$(this).attr('data-id')] = $(this).text();
				itemValues.push(itemValue);
			});

			for (var i = 0; i < itemValues.length; i++) {
				console.log(itemValues[i]);
			}

			return itemValues;
		}

		/**
		 * 初始化添加、移除、获取值按钮事件
		 */
		function initBtnEvent() {
			var btnBox = selectTitle.find('.list-body .center-box');
			var leftBox = selectTitle.find('.list-body .left-box');
			var rightBox = selectTitle.find('.list-body .right-gy');

			// 添加一项
			btnBox.find('.add-one').on('click', function() {
				leftBox.find('.selected-item').trigger('dblclick'); // 触发双击事件
			});
			// 添加所有项
			btnBox.find('.add-all').on('click', function() {
				leftBox.find('.item').trigger('dblclick');
			});
			// 移除一项
			btnBox.find('.remove-one').on('click', function() {
				rightBox.find('.selected-item').find('.sensorNo').trigger('dblclick'); // 触发双击事件
			});
			// 移除所有项
			btnBox.find('.remove-all').on('click', function() {
				rightBox.find('.tab-content #' + tabId).find('.sensorNo').trigger('dblclick');
			});

			selectTitle.find('.list-footer').find('.selected-val').on('click', getSelectedValue);
		}
		initItemEvent();
		initBtnEvent();
	}
})($)